//package com.zhj.edu.messagecenterserver.mqtt.observer.impl;
//
//import com.alibaba.fastjson2.JSON;
//import com.zhj.edu.bo.HardwareMessageBo;
//import com.zhj.edu.constance.RedisConstance;
//import com.zhj.edu.manager.RedisManager;
//import com.zhj.edu.messagecenterserver.mqtt.observer.base.Observer;
//import com.zhj.edu.mqtt.data.MqttMessage;
//import lombok.extern.slf4j.Slf4j;
//import org.springframework.beans.factory.annotation.Autowired;
//import org.springframework.stereotype.Component;
//
///**
// * @author xiaobobo
// * @title: SaveDataObserver
// * @projectName cd-fy-2401-third-project-parent
// * @description: 这个就是数据保存的这个观察者
// * @date 2024/10/9  17:35
// */
//@Component
//@Slf4j
//public class SaveDataObserver implements Observer {
//
//    @Autowired
//    private RedisManager redisManager;
//
//    @Override
//    public void notifyHandler(MqttMessage mqttMessage) {
//        log.info("数据正在保存");
//        /**
//         * 这里的硬件数据我们是存储到 Redis中
//         * 这里我们采用存储固定数量的数据到 Redis
//         *
//         * List
//         *     lpush   rpop
//         *
//         *  设计：数据的存储
//         *
//         *  集合的名字： hardware:msg:save:设备key   数据(JSON)
//         *
//         */
//        String payload = mqttMessage.getMessagePayload().getPayload();
//        HardwareMessageBo hardwareMessageBo = JSON.parseObject(payload, HardwareMessageBo.class);
//        String device = hardwareMessageBo.getDevice();
//        //构建集合的名字
//        String listName= RedisConstance.getHardwareSaveListPrefix()+device;
//        //取出这个硬件的数据
//        String hardwareData = JSON.toJSONString(hardwareMessageBo.getData());
//        //先判断这个数据的个数是不是大于了10000条
//        long count = redisManager.countList(listName);
//        if(count>=10000){
//            redisManager.listRightPop(listName);
//        }
//        //然后存储这个数据到Redis
//        redisManager.addList(listName,hardwareData);
//        log.info("硬件数据保存完成....");
//    }
//}
